<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
	<title>远程集群 | ElasticSearch 7.7 权威指南中文版</title>
	<meta name="keywords" content="ElasticSearch 权威指南中文版, elasticsearch 7, es7, 实时数据分析，实时数据检索" />
    <meta name="description" content="ElasticSearch 权威指南中文版, elasticsearch 7, es7, 实时数据分析，实时数据检索" />
    <!-- Give IE8 a fighting chance -->
    <!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
	<link rel="stylesheet" type="text/css" href="../static/styles.css" />
	<script>
	var _link = 'modules-remote-clusters.html';
    </script>
</head>
<body>
<div class="main-container">
    <section id="content">
        <div class="content-wrapper">
            <section id="guide" lang="zh_cn">
                <div class="container">
                    <div class="row">
                        <div class="col-xs-12 col-sm-8 col-md-8 guide-section">
                            <div style="color:gray; word-break: break-all; font-size:12px;">原英文版地址: <a href="https://www.elastic.co/guide/en/elasticsearch/reference/7.7/modules-remote-clusters.html" rel="nofollow" target="_blank">https://www.elastic.co/guide/en/elasticsearch/reference/7.7/modules-remote-clusters.html</a>, 原文档版权归 www.elastic.co 所有<br/>本地英文版地址: <a href="../en/modules-remote-clusters.html" rel="nofollow" target="_blank">../en/modules-remote-clusters.html</a></div>
                        <!-- start body -->
                  <div class="page_header">
<strong>重要</strong>: 此版本不会发布额外的bug修复或文档更新。最新信息请参考 <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html" rel="nofollow">当前版本文档</a>。
</div>
<div id="content">
<div class="breadcrumbs">
<span class="breadcrumb-link"><a href="index.html">Elasticsearch 权威指南 [7.7]</a></span>
»
<span class="breadcrumb-link"><a href="setup.html">安装和设置</a></span>
»
<span class="breadcrumb-node">远程集群</span>
</div>
<div class="navheader">
<span class="prev">
<a href="restart-cluster.html">« 全集群重启和滚动重启</a>
</span>
<span class="next">
<a href="setup-xpack.html">安装X-Pack »</a>
</span>
</div>
<div class="chapter">
<div class="titlepage"><div><div>
<h2 class="title">
<a id="modules-remote-clusters"></a>远程集群 (Remote clusters)
</h2>
</div></div></div>
<p>
<em>远程集群(remote clusters)</em> 功能使你能够建立与远程集群的单向连接。
<a class="xref" href="xpack-ccr.html" title="Cross-cluster replication">跨集群复制</a> 和 <a class="xref" href="modules-cross-cluster-search.html" title="Search across clusters">跨集群搜索</a> 需要远程集群。
</p>
<p>
远程集群连接通过配置远程集群并连接到该远程集群中有限数量的节点来工作。
远程集群连接有两种模式：<a class="xref" href="modules-remote-clusters.html#sniff-mode" title="Sniff mode">嗅探模式(sniff mode)</a> 和 <a class="xref" href="modules-remote-clusters.html#proxy-mode" title="Proxy mode">代理模式(proxy mode)</a>。
</p>
<p>
不同集群之间所需的所有通信都要经过 <a class="xref" href="modules-transport.html" title="Transport">传输层</a>。

远程集群连接由从协调节点到远程连接的单向连接组成。
</p>
<h3>
<a id="sniff-mode"></a>嗅探模式(sniff mode)
</h3>
<p>
在嗅探模式中，使用一个名称和一个种子节点列表来创建集群。
  
注册远程集群时，从其中一个种子节点检索其集群状态，并选择最多三个 <em>网关节点(gateway node)</em> 作为远程集群请求的一部分。

此模式要求本地集群可以访问网关节点的发布地址。
</p>
<p>嗅探模式是默认的连接模式。</p>
<h4>
<a id="gateway-nodes-selection"></a>网关节点选择 (gateway nodes selection)
</h4>
<p>
<em>g网关节点</em> 的选择取决于以下标准：
</p>
<div class="ulist itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<span class="strong strong"><strong>version</strong></span>：远程节点必须与它们注册到的集群兼容。

这受制于与 <a class="xref" href="rolling-upgrades.html" title="Rolling upgrades"><em>滚动升级(Rolling upgrades)</em></a>相似的规则。

任何节点都可以与同一主版本上的任何其他节点通信(例如，7.0 可以与任何 7.x 版本的节点通信)。

只有某个主要版本的最后一个次要版本上的节点才能与下一个主要版本上的节点通信。

注意，在 6.x 系列中，6.8 可以与任何 7.x 节点通信，而 6.7 只能与 7.0 通信。

版本兼容性是对称的，意味着如果 6.7 可以与 7.0 通信，那么 7.0 也可以与 6.7 通信。

下表总结了如上所述的兼容性。
</li>
</ul>
</div>
<div class="informaltable">
<table border="1" cellpadding="4px">
<colgroup>
<col class="col_1">
<col class="col_2">
<col class="col_3">
<col class="col_4">
<col class="col_5">
<col class="col_6">
<col class="col_7">
<col class="col_8">
</colgroup>
<tbody>
<tr>
<td align="center" valign="top"><p>兼容性</p></td>
<td align="center" valign="top"><p>5.0→5.5</p></td>
<td align="center" valign="top"><p>5.6</p></td>
<td align="center" valign="top"><p>6.0→6.6</p></td>
<td align="center" valign="top"><p>6.7</p></td>
<td align="center" valign="top"><p>6.8</p></td>
<td align="center" valign="top"><p>7.0</p></td>
<td align="center" valign="top"><p>7.1→7.x</p></td>
</tr>
<tr>
<td align="center" valign="top"><p>5.0→5.5</p></td>
<td align="center" valign="top"><p>Yes</p></td>
<td align="center" valign="top"><p>Yes</p></td>
<td align="center" valign="top"><p>No</p></td>
<td align="center" valign="top"><p>No</p></td>
<td align="center" valign="top"><p>No</p></td>
<td align="center" valign="top"><p>No</p></td>
<td align="center" valign="top"><p>No</p></td>
</tr>
<tr>
<td align="center" valign="top"><p>5.6</p></td>
<td align="center" valign="top"><p>Yes</p></td>
<td align="center" valign="top"><p>Yes</p></td>
<td align="center" valign="top"><p>Yes</p></td>
<td align="center" valign="top"><p>Yes</p></td>
<td align="center" valign="top"><p>Yes</p></td>
<td align="center" valign="top"><p>No</p></td>
<td align="center" valign="top"><p>No</p></td>
</tr>
<tr>
<td align="center" valign="top"><p>6.0→6.6</p></td>
<td align="center" valign="top"><p>No</p></td>
<td align="center" valign="top"><p>Yes</p></td>
<td align="center" valign="top"><p>Yes</p></td>
<td align="center" valign="top"><p>Yes</p></td>
<td align="center" valign="top"><p>Yes</p></td>
<td align="center" valign="top"><p>No</p></td>
<td align="center" valign="top"><p>No</p></td>
</tr>
<tr>
<td align="center" valign="top"><p>6.7</p></td>
<td align="center" valign="top"><p>No</p></td>
<td align="center" valign="top"><p>Yes</p></td>
<td align="center" valign="top"><p>Yes</p></td>
<td align="center" valign="top"><p>Yes</p></td>
<td align="center" valign="top"><p>Yes</p></td>
<td align="center" valign="top"><p>Yes</p></td>
<td align="center" valign="top"><p>No</p></td>
</tr>
<tr>
<td align="center" valign="top"><p>6.8</p></td>
<td align="center" valign="top"><p>No</p></td>
<td align="center" valign="top"><p>Yes</p></td>
<td align="center" valign="top"><p>Yes</p></td>
<td align="center" valign="top"><p>Yes</p></td>
<td align="center" valign="top"><p>Yes</p></td>
<td align="center" valign="top"><p>Yes</p></td>
<td align="center" valign="top"><p>Yes</p></td>
</tr>
<tr>
<td align="center" valign="top"><p>7.0</p></td>
<td align="center" valign="top"><p>No</p></td>
<td align="center" valign="top"><p>No</p></td>
<td align="center" valign="top"><p>No</p></td>
<td align="center" valign="top"><p>Yes</p></td>
<td align="center" valign="top"><p>Yes</p></td>
<td align="center" valign="top"><p>Yes</p></td>
<td align="center" valign="top"><p>Yes</p></td>
</tr>
<tr>
<td align="center" valign="top"><p>7.1→7.x</p></td>
<td align="center" valign="top"><p>No</p></td>
<td align="center" valign="top"><p>No</p></td>
<td align="center" valign="top"><p>No</p></td>
<td align="center" valign="top"><p>No</p></td>
<td align="center" valign="top"><p>Yes</p></td>
<td align="center" valign="top"><p>Yes</p></td>
<td align="center" valign="top"><p>Yes</p></td>
</tr>
</tbody>
</table>
</div>
<div class="ulist itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<span class="strong strong"><strong>角色(role)</strong></span>：专用主节点永远不会被选中。
</li>
<li class="listitem">
<span class="strong strong"><strong>属性(attributes)</strong></span>：
你可以标记应该选择哪些节点(请参阅<a class="xref" href="modules-remote-clusters.html#remote-cluster-settings" title="Remote cluster settings for all modes">所有模式下的远程集群设置</a>)，尽管这样标记的节点仍然必须满足上述两个要求。
</li>
</ul>
</div>
<h3>
<a id="proxy-mode"></a>代理模式 (Proxy mode)
</h3>
<p>
在代理模式下，使用名称和单个代理地址创建集群。

注册远程集群时，会向代理地址打开可配置数量的 socket 连接。

代理需要将这些连接路由到远程集群。

代理模式不要求远程集群节点具有可访问的发布地址。
</p>
<p>
代理模式不是默认的连接模式，必须进行配置。

与嗅探模式下的 <a class="xref" href="modules-remote-clusters.html#gateway-nodes-selection" title="Gateway nodes selection">网关节点</a> 类似，远程连接遵循与 <a class="xref" href="rolling-upgrades.html" title="Rolling upgrades"><em>滚动升级</em></a> 相同的版本兼容性规则。
</p>
<h4>
<a id="configuring-remote-clusters"></a>配置远程集群
</h4>
<p>
可以使用 <a class="xref" href="cluster-update-settings.html" title="Cluster update settings API">集群设置</a> 来全局配置远程集群，集群设置可以动态更新。

或者，你可以使用 <code class="literal">elasticsearch.yml</code> 文件在单个节点上进行本地配置。
</p>
<p>
如果在 <code class="literal">elasticsearch.yml</code> 文件中指定设置，则只有具有这些设置的节点才能连接到远程集群。

换句话说，依赖于远程集群请求的功能必须由这些节点专门驱动。例如:
</p>
<div class="pre_wrapper lang-yaml">
<pre class="programlisting prettyprint lang-yaml">cluster:
    remote:
        cluster_one: <a id="CO30-1"></a><i class="conum" data-value="1"></i>
            seeds: 127.0.0.1:9300 <a id="CO30-2"></a><i class="conum" data-value="2"></i>
            transport.ping_schedule: 30s <a id="CO30-3"></a><i class="conum" data-value="3"></i>
        cluster_two: <a id="CO30-4"></a><i class="conum" data-value="1"></i>
            mode: sniff <a id="CO30-5"></a><i class="conum" data-value="4"></i>
            seeds: 127.0.0.1:9301 <a id="CO30-6"></a><i class="conum" data-value="2"></i>
            transport.compress: true <a id="CO30-7"></a><i class="conum" data-value="5"></i>
            skip_unavailable: true <a id="CO30-8"></a><i class="conum" data-value="6"></i>
        cluster_three: <a id="CO30-9"></a><i class="conum" data-value="1"></i>
            mode: proxy <a id="CO30-10"></a><i class="conum" data-value="4"></i>
            proxy_address: 127.0.0.1:9302 <a id="CO30-11"></a><i class="conum" data-value="7"></i></pre>
</div>
<div class="calloutlist">
<table border="0" summary="Callout list">
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO30-1"><i class="conum" data-value="1"></i></a><a href="#CO30-4"></a><a href="#CO30-9"></a></p>
</td>
<td align="left" valign="top">
<p>
<code class="literal">cluster_one</code>、<code class="literal">cluster_two</code> 和 <code class="literal">cluster_three</code> 是代表到每个集群的连接的任意<em>集群别名</em>。

这些名称随后用于区分本地索引和远程索引。
</p>
</td>
</tr>
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO30-2"><i class="conum" data-value="2"></i></a><a href="#CO30-6"></a></p>
</td>
<td align="left" valign="top">
<p>
远程集群中种子节点的主机名和<a class="xref" href="modules-transport.html" title="Transport">传输</a>端口（默认值：9300）。
</p>
</td>
</tr>
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO30-3"><i class="conum" data-value="3"></i></a></p>
</td>
<td align="left" valign="top">
<p>为 <code class="literal">cluster_one</code> 配置了保持活动的 ping。</p>
</td>
</tr>
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO30-5"><i class="conum" data-value="4"></i></a><a href="#CO30-10"></a></p>
</td>
<td align="left" valign="top">
<p>
配置的连接模式。

默认情况下，它是 <a class="xref" href="modules-remote-clusters.html#sniff-mode" title="Sniff mode"><code class="literal">sniff</code></a>，因此该模式对于 <code class="literal">cluster_one</code> 隐式的。

但是，它可以按 <code class="literal">cluster_two</code> 所示显式配置，并且必须按 <code class="literal">cluster_three</code> 所示显式配置为 <a class="xref" href="modules-remote-clusters.html#proxy-mode" title="Proxy mode">代理模式</a>。
</p>
</td>
</tr>
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO30-7"><i class="conum" data-value="5"></i></a></p>
</td>
<td align="left" valign="top">
<p>
对 <code class="literal">cluster_two</code> 的请求显式启用压缩。
</p>
</td>
</tr>
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO30-8"><i class="conum" data-value="6"></i></a></p>
</td>
<td align="left" valign="top">
<p>
对于 <code class="literal">cluster_two</code>，断开连接的远程集群是可选的。
</p>
</td>
</tr>
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO30-11"><i class="conum" data-value="7"></i></a></p>
</td>
<td align="left" valign="top">
<p>
用于连接 <code class="literal">cluster_three</code> 的代理端点的地址。
</p>
</td>
</tr>
</table>
</div>
<p>
有关可选的传输设置的更多信息，参考 <a class="xref" href="modules-transport.html" title="Transport">传输</a>。
</p>
<p>
如果使用 <a class="xref" href="cluster-update-settings.html" title="Cluster update settings API">集群设置</a>，远程集群在集群中的每个节点上都可用。例如:
</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">PUT _cluster/settings
{
  "persistent": {
    "cluster": {
      "remote": {
        "cluster_one": {
          "seeds": [
            "127.0.0.1:9300"
          ],
          "transport.ping_schedule": "30s"
        },
        "cluster_two": {
          "mode": "sniff",
          "seeds": [
            "127.0.0.1:9301"
          ],
          "transport.compress": true,
          "skip_unavailable": true
        },
        "cluster_three": {
          "mode": "proxy",
          "proxy_address": "127.0.0.1:9302"
        }
      }
    }
  }
}</pre>
</div>
<div class="console_widget" data-snippet="snippets/55.console"></div>
<p>
可以动态更新 压缩 和 ping 时间表设置。

但是，必须在更新设置的请求中重新包含  <code class="literal">seeds</code> 或 <code class="literal">proxy_address</code>。例如:
</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">PUT _cluster/settings
{
  "persistent": {
    "cluster": {
      "remote": {
        "cluster_one": {
          "seeds": [
            "127.0.0.1:9300"
          ],
          "transport.ping_schedule": "60s"
        },
        "cluster_two": {
          "mode": "sniff",
          "seeds": [
            "127.0.0.1:9301"
          ],
          "transport.compress": false
        },
        "cluster_three": {
          "mode": "proxy",
          "proxy_address": "127.0.0.1:9302",
          "transport.compress": true
        }
      }
    }
  }
}</pre>
</div>
<div class="console_widget" data-snippet="snippets/56.console"></div>
<div class="note admon">
<div class="icon"></div>
<div class="admon_content">
<p>
当 压缩 或 ping 时间表设置更改时，所有现有节点连接必须关闭并重新打开，这可能会导致正在进行的请求失败。
</p>
</div>
</div>
<p>通过将远程集群的设置设置为<code class="literal">null</code> ，可以将其从集群设置中删除:</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">PUT _cluster/settings
{
  "persistent": {
    "cluster": {
      "remote": {
        "cluster_two": { <a id="CO31-1"></a><i class="conum" data-value="1"></i>
          "mode": null,
          "seeds": null,
          "skip_unavailable": null,
          "transport": {
            "compress": null
          }
        }
      }
    }
  }
}</pre>
</div>
<div class="console_widget" data-snippet="snippets/57.console"></div>
<div class="calloutlist">
<table border="0" summary="Callout list">
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO31-1"><i class="conum" data-value="1"></i></a></p>
</td>
<td align="left" valign="top">
<p>
<code class="literal">cluster_two</code> 将从集群设置中删除，而 <code class="literal">cluster_one</code> 和 <code class="literal">cluster_three</code>保持不变。
</p>
</td>
</tr>
</table>
</div>
<h3>
<a id="remote-cluster-settings"></a>所有模式下的远程集群配置 (Remote cluster settings for all modes)
</h3>
<p>
这些设置适用于 <a class="xref" href="modules-remote-clusters.html#sniff-mode" title="Sniff mode">嗅探模式</a> 和 <a class="xref" href="modules-remote-clusters.html#proxy-mode" title="Proxy mode">代理模式</a>。

<a class="xref" href="modules-remote-clusters.html#remote-cluster-sniff-settings" title="Remote cluster settings for sniff mode">嗅探模式设置</a>和<a class="xref" href="modules-remote-clusters.html#remote-cluster-proxy-settings" title="Remote cluster settings for proxy mode">代理模式设置</a>  设置如下：
</p>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">cluster.remote.&lt;cluster_alias&gt;.mode</code>
</span>
</dt>
<dd>
用于远程集群连接的模式。
支持的模式仅限 <code class="literal">sniff</code> 和 <code class="literal">proxy</code>。
</dd>
<dt>
<span class="term">
<code class="literal">cluster.remote.initial_connect_timeout</code>
</span>
</dt>
<dd>
节点启动时等待建立远程连接的时间。默认值为 <code class="literal">30s</code>。
</dd>
<dt>
<span class="term">
<code class="literal">node.remote_cluster_client</code>
</span>
</dt>
<dd>
默认情况下，集群中的任何节点都可以充当跨集群客户端，并连接到远程集群。

<code class="literal">node.remote_cluster_client</code> 设置可以设置为 <code class="literal">false</code> (默认为 <code class="literal">true</code>)，以防止某些节点连接到远程集群。

远程集群请求必须发送到允许充当跨集群客户端的节点。
</dd>
<dt>
<span class="term">
<code class="literal">cluster.remote.&lt;cluster_alias&gt;.skip_unavailable</code>
</span>
</dt>
<dd>
每个集群布尔值设置，当没有属于某个集群的节点可用且它们是远程集群请求的目标时，允许跳过特定集群。  

默认值为 <code class="literal">false</code>，这意味着默认情况下所有集群都是强制的，但是通过将此设置设置为 <code class="literal">true</code>，可以有选择地将它们设置为可选的。
</dd>
<dt>
<span class="term">
<code class="literal">cluster.remote.&lt;cluster_alias&gt;.transport.ping_schedule</code>
</span>
</dt>
<dd>
设置发送常规应用程序级 ping 消息的时间间隔，以确保到属于远程集群的节点的传输连接保持活动状态。

如果设置为 <code class="literal">-1</code>，则不会向该远程集群发送应用程序级别的 ping 消息。

如果未设置，则根据全局 <code class="literal">transport.ping_schedule</code> 设置发送应用程序级别的 ping 消息，默认值为 <code class="literal">-1</code>，表示不发送 ping。
</dd>
<dt>
<span class="term">
<code class="literal">cluster.remote.&lt;cluster_alias&gt;.transport.compress</code>
</span>
</dt>
<dd>
每个集群布尔值设置，使你能够为特定远程集群的请求配置压缩。

此设置仅影响发送到远程集群的请求。

如果入站请求被压缩，Elasticsearch 会压缩响应。

如果未设置，全局 <code class="literal">transport.compress</code> 将用作回退设置。
</dd>
</dl>
</div>
<h3>
<a id="remote-cluster-sniff-settings"></a>嗅探模式的远程集群设置
</h3>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">cluster.remote.&lt;cluster_alias&gt;.seeds</code>
</span>
</dt>
<dd>
用于探查远程集群状态的种子节点列表。
</dd>
<dt>
<span class="term">
<code class="literal">cluster.remote.&lt;cluster_alias&gt;.node_connections</code>
</span>
</dt>
<dd>
该远程集群要连接的网关节点数。默认值为 <code class="literal">3</code>。
</dd>
<dt>
<span class="term">
<code class="literal">cluster.remote.node.attr</code>
</span>
</dt>
<dd>
一个节点属性，用于筛选出可作为远程集群中网关节点的节点。

例如，节点可以具有节点属性 <code class="literal">node.attr.gateway: true</code> ，这样，如果 <code class="literal">cluster.remote.node.attr</code> 设置为 <code class="literal">gateway</code>，则只有具有该属性的节点才会连接到。
</dd>
</dl>
</div>
<h3>
<a id="remote-cluster-proxy-settings"></a>代理模式下远程集群的配置
</h3>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">cluster.remote.&lt;cluster_alias&gt;.proxy_address</code>
</span>
</dt>
<dd>
用于所有远程连接的地址。
</dd>
<dt>
<span class="term">
<code class="literal">cluster.remote.&lt;cluster_alias&gt;.proxy_socket_connections</code>
</span>
</dt>
<dd>
每个远程集群要打开的 socket 连接数。默认值为 <code class="literal">18</code>。
</dd>
</dl>
</div>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">cluster.remote.&lt;cluster_alias&gt;.server_name</code>
</span>
</dt>
<dd>
可选的主机名字符串，如果<a class="xref" href="configuring-tls.html" title="Encrypting communications in Elasticsearch">启用了 TLS</a>，则在 TLS 服务器名称指示<span class="remark">(TLS SNI, TLS Server Name Indication)</span> 扩展的 <code class="literal">server_name</code> 字段中发送。

如果此字段不是 TLS SNI 规范定义的有效主机名，TLS 传输将无法打开远程连接。
</dd>
</dl>
</div>
<h3>
<a id="retrieve-remote-clusters-info"></a>检索远程集群信息
</h3>
<p>
可以使用 <a class="xref" href="cluster-remote-info.html" title="Remote cluster info API">远程集群信息API</a> 来检索关于已配置的远程集群以及该节点所连接的远程节点的信息。
</p>
</div>
<div class="navfooter">
<span class="prev">
<a href="restart-cluster.html">« 全集群重启和滚动重启</a>
</span>
<span class="next">
<a href="setup-xpack.html">安装X-Pack »</a>
</span>
</div>
</div>

                  <!-- end body -->
                        </div>
                        <div class="col-xs-12 col-sm-4 col-md-4" id="right_col">
                        
                        </div>
                    </div>
                </div>
            </section>
        </div>
    </section>
</div>
<script src="../static/cn.js"></script>
</body>
</html>